using ConsoleApi.Models;

namespace ConsoleApi.Services.Interfaces;

/// <summary>
/// 天气预警规则引擎接口
/// </summary>
public interface IWeatherAlertRuleEngine
{
    /// <summary>
    /// 分析天气对生产活动的影响
    /// </summary>
    /// <param name="weatherData">天气数据</param>
    /// <param name="activities">生产活动列表</param>
    /// <returns>生产预警列表</returns>
    Task<List<ProductionAlert>> AnalyzeWeatherImpactAsync(WeatherData weatherData, List<ProductionActivity> activities);
    
    /// <summary>
    /// 生成预警信息
    /// </summary>
    /// <param name="city">城市名称</param>
    /// <param name="activityType">活动类型</param>
    /// <returns>生产预警列表</returns>
    Task<List<ProductionAlert>> GenerateAlertsAsync(string city, string activityType);
    
    /// <summary>
    /// 分析生产影响
    /// </summary>
    /// <param name="city">城市名称</param>
    /// <param name="activityType">活动类型</param>
    /// <returns>天气影响分析</returns>
    Task<WeatherImpactAnalysis> AnalyzeProductionImpactAsync(string city, string activityType);
    
    /// <summary>
    /// 获取天气趋势
    /// </summary>
    /// <param name="city">城市名称</param>
    /// <returns>天气趋势列表</returns>
    Task<List<WeatherTrend>> GetWeatherTrendsAsync(string city);
    
    /// <summary>
    /// 获取生产建议
    /// </summary>
    /// <param name="city">城市名称</param>
    /// <param name="activityType">活动类型</param>
    /// <returns>生产建议</returns>
    Task<ProductionRecommendation> GetProductionRecommendationsAsync(string city, string activityType);
} 